/*************************** Ccay IGrid Compatibility ***********************************/
(function(IGrid) {
	var compatibility = {
		/** @description 设置数据绑定完成后，浏览器兼容问题
		 *  @param {Object} grid IGrid对象
		 *  @param {Object} op grid的配置信息
		 */
		setAfterBindData: function (grid, op) {
			// 修正横向滚动条闪烁问题
			compatibility.setTopHeight(grid, op);
			// 修正IE8浏览器下，行合并的百分比模式下，出现竖向滚动条的问题
			compatibility.setHiddenScroll(grid, op);
		},
		/** @description 修正横向滚动条闪烁问题
		 *  @param {Object} grid IGrid对象
		 *  @param {Object} op grid的配置信息
		 */
		setTopHeight: function (grid, op) {
    		// 表头折行模式下
    		if (op.wrapHead) {
    			var headTable = grid.getHeadTable();
    			headTable.removeAttr("style");
    			// ie11下表头很高的问题
    			headTable.height(headTable[0].height);
    		}
    	},
    	/** @description 修正IE8浏览器下，行合并的百分比模式下，出现竖向滚动条的问题
		 *  @param {Object} grid IGrid对象
		 *  @param {Object} op grid的配置信息
		 */
    	setHiddenScroll: function (grid, op) {
    		// IE8浏览器下，行合并的百分比模式下
    		if ($.browser.msie && ($.browser.version == 8.0) && op.percentWidth && (op.rowRender == "rowSpan")) {
    			var bodyPanel = grid.getBodyPanel(),
    				bodyHeight = bodyPanel.css("max-height") || bodyPanel.css("height"),
    				dataHeight = grid.getBodyTable().height();
    			// 若数据未超出grid的最大高度，则隐藏竖向滚动条，否则显示
    			if (dataHeight <= parseInt(bodyHeight)) {
    				bodyPanel.css("overflow", "hidden");
    			} else {
    				bodyPanel.css("overflow", "");
    			}
    		}
    	},
    	/** @description 修正表头的宽度
		 *  @param {Object} grid IGrid对象
		 *  @param {Object} op grid的配置信息
		 */
    	setHeadWidth: function (grid, op) {
    		// 处理chorme下padding兼容性问题
    		if (op.percentWidth && $.browser.safari) {
    			var head = grid.getHeadTable();
    			head.width("99.9%");
    			setTimeout(function(){
    				head.width("100%");
    			}, 10);
    		}
    	},
    	/** @description 设置列的编辑模式
		 *  @param {Object} grid IGrid对象
		 *  @param {Object} col 列的配置信息
		 *  @param {Object} op grid的配置信息
		 */
    	setEditor: function (grid, col, op) {
    		if (!col.inner && !col.columnType && col.editable !== false && col.editorOp) {
    			// ldap和联想框去除等待间隔
				if (col.editorOp.type == "ldap" || col.editorOp.type == "suggest") {
					col.editorOp.conf = col.editorOp.conf || {};
					col.editorOp.conf.nopending = true;
				}
				// 弹出框自动关闭
				if (col.editorOp.autoClose) {
					col.editorOp.conf = col.editorOp.conf || {};
					col.editorOp.conf.fnSelect = function() {
						// 结束编辑
						IGrid.Editor.endEdit(col._editCtr.parent(), grid, grid.op);
					}
				}
    		}
    	}
	};

	/** 注册扩展插件 */
	Ccay.UI.XControl.addPlugin("XGrid", "compatibility", {
				build : function(grid, op) {
					// 列编辑器设置
					op.handler.setEditor.add(compatibility.setEditor);
					// 列宽改变设置表头高度
					op.handler.widthChange.add(compatibility.setTopHeight);
					// 绑定数据后设置浏览器兼容问题
					op.handler.afterBindData.add(compatibility.setAfterBindData);
					// 处理chorme下padding兼容性问题
					op.handler.complete.add(compatibility.setHeadWidth);
				}
			});

})(Ccay.UI.IGrid);